-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
-- http://www.loria.fr/SmallEiffel
--
*/
/*
This file (base.h) is automatically included in the header for all modes
of compilation : -boost, -no_check, -require_check, ...
This file is also included in the header of any cecil file.
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <signal.h>
#include <stddef.h>
#include <stdarg.h>
#include <limits.h>
#include <float.h>
#include <setjmp.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#ifndef O_RDONLY
#include <sys/file.h>
#endif
#ifndef O_RDONLY
#define O_RDONLY 0000
#endif
/*
On Linux glibc systems, we need to use sig.* versions of jmp_buf,
setjmp and longjmp to preserve the signal handling context.
Currently, the way I figured to detect this is if _SIGSET_H_types has
been defined in /usr/include/setjmp.h.
*/
#ifdef _SIGSET_H_types
# define JMP_BUF sigjmp_buf
# define SETJMP(x) sigsetjmp( (x), 1)
# define LONGJMP siglongjmp
#else
# define JMP_BUF jmp_buf
# define SETJMP(x) setjmp( (x) )
# define LONGJMP longjmp
#endif
/*
Type to store reference objects Id :
*/
typedef int Tid;
typedef struct S0 T0;
struct S0{
Tid id;
};
/*
The default channel used to print runtime error messages :
*/
#define SE_ERR stderr
/*
Eiffel type INTEGER is #2 :
*/
typedef int T2;
#define M2 (0)
#define T2BITS (CHAR_BIT*sizeof(int))
#define T2MIN INT_MIN
#define T2MAX INT_MAX
/*
Eiffel type CHARACTER is #3 :
*/
typedef char T3;
#define M3 (0)
#define T3BITS CHAR_BIT
#define T3MIN (0)
#define T3MAX (255)
/*
Eiffel type REAL is #4 :
*/
typedef float T4;
#define M4 (0.0)
#define T4BITS (CHAR_BIT*sizeof(float))
#define T4MIN (-(FLT_MAX))
#define T4MAX FLT_MAX
/*
Eiffel type DOUBLE is #5 :
*/
typedef double T5;
#define M5 (0.0)
#define T5BITS (CHAR_BIT*sizeof(double))
#define T5MIN (-(DBL_MAX))
#define T5MAX DBL_MAX
/*
Eiffel type BOOLEAN is #6 :
*/
typedef int T6;
#define M6 (0)
#define T6BITS (CHAR_BIT*sizeof(int))
/*
Eiffel type POINTER is #8 :
*/
typedef void* T8;
#define M8 (NULL)
#define T8BITS (CHAR_BIT*sizeof(void*))
/* --- Mangling Table Start ---
D 2 T166 R BOOLEAN_CONSTANT 169,168
A 1 T55 R BIT_CONSTANT 55
A*1 T107 R TAG_NAME 107
A 1 T276 R TYPE_BIT_1 276
A*1 T76 R ARRAY[CREATION_CLAUSE] 76
D 2 T311 R ARRAY[LOCAL_ARGUMENT1] 191,185
A*1 T215 R E_ENSURE 215
A 1 T221 R ARRAY[MANIFEST_STRING] 221
A 1 T220 R E_DEBUG 220
A 1 T213 R CST_ATT_INTEGER 213
A 1 T132 R CALL_INFIX_PLUS 132
A 1 T170 R CHARACTER_CONSTANT 170
A 1 T282 R ASSIGNMENT 282
A*1 T43 R RUN_CONTROL 43
A*1 T321 R INDEX_LIST 321
A*1 T316 R EXPORT_ITEM 316
A*1 T64 R CLASS_NAME 64
A*1 T73 R DICTIONARY[STRING,STRING] 73
A 1 T359 E NATIVE_ARRAY[E_REQUIRE] 359
A 1 T9 E NATIVE_ARRAY[CHARACTER] 9
A 1 T61 E NATIVE_ARRAY[RUN_CLASS] 61
A 1 T108 E NATIVE_ARRAY[ASSERTION] 108
A 1 T100 E NATIVE_ARRAY[E_FEATURE] 100
A 1 T239 E NATIVE_ARRAY[WHEN_ITEM] 239
A 1 T310 R DECLARATION_GROUP 310
A*1 T286 R E_REQUIRE 286
A 1 T71 E NATIVE_ARRAY[POSITION] 71
A 1 T250 R CREATION_CALL_2 250
A 1 T119 R CALL_INFIX_XOR 119
A 1 T174 R INTEGER_CONSTANT 174
A 1 T270 R TYPE_POINTER 270
A 1 T268 R TYPE_INTEGER 268
A 1 T365 R CECIL_ARG_LIST 365
A 1 T277 R TYPE_BIT_2 277
A 1 T382 R FIXED_ARRAY[TYPE_BIT_REF] 382
A 1 T57 R FIXED_ARRAY[BIT_CONSTANT] 57
A*1 T86 R FIXED_ARRAY[FEATURE_NAME] 86
A 1 T138 R INFIX_NAME 138
A 1 T298 R NATIVE_JVM_INVOKESTATIC 298
A*1 T36 R SYSTEM_TOOLS 36
A*1 T27 R DOUBLE_REF 27
A 1 T280 R TYPE_FORMAL_GENERIC 280
A 1 T171 R MANIFEST_STRING 171
A 1 T187 R FORMAL_ARG_LIST 187
A*1 T66 R DICTIONARY[BASE_CLASS,STRING] 66
A 1 T356 R RUN_FEATURE_2 356
A*1 T85 R FEATURE_NAME_LIST 85
A*1 T104 R CLASS_INVARIANT 104
A*1 T195 R CLASS_NAME_LIST 195
A 1 T193 R IMPLICIT_CURRENT 193
D 8 T214 R ROUTINE 306,305,303,302,291,290,287,285
A*1 T109 R TMP_NAME 109
D 17 T161 R INSTRUCTION 283,282,254,252,250,247,244,232,231,222,225,177,164,163,218,165,220
A 1 T246 R LOOP_VARIANT_1 246
A*1 T34 R EIFFEL_PARSER 34
A 1 T113 R CALL_INFIX_IMPLIES 113
A 1 T375 R RUN_FEATURE_11 375
A 1 T5 E DOUBLE 5
A 1 T165 R PROC_CALL_N 165
A 1 T275 R TYPE_EXPANDED 275
A 1 T351 E NATIVE_ARRAY[ADDRESS_OF] 351
A 1 T68 E NATIVE_ARRAY[BASE_CLASS] 68
A 1 T112 E NATIVE_ARRAY[EXPRESSION] 112
A 1 T197 E NATIVE_ARRAY[CLASS_NAME] 197
A 1 T191 R ARRAY[ARGUMENT_NAME1] 191
A*1 T97 R ARRAY[FEATURE_CLAUSE] 97
A 1 T202 R FIXED_ARRAY[INTEGER_CONSTANT] 202
A 1 T145 R CALL_PREFIX_NOT 145
A 1 T218 R E_CHECK 218
D 2 T154 R ABSTRACT_RESULT 155,156
A 1 T156 R ORDINARY_RESULT 156
A 1 T178 R LOCAL_VAR_LIST 178
A 1 T269 R TYPE_NONE 269
A 1 T121 R CALL_INFIX_OR_ELSE 121
A*1 T261 R ARRAY[TYPE] 261
A 1 T291 R EXTERNAL_FUNCTION 291
D 7 T288 R NATIVE 292,300,295,293,297,296,298
A 1 T355 E NATIVE_ARRAY[BOOLEAN] 355
A 1 T48 E NATIVE_ARRAY[INTEGER] 48
A 1 T391 E NATIVE_ARRAY[RUN_FEATURE_5] 391
D 2 T242 R LOOP_VARIANT 245,246
A 1 T369 E NATIVE_ARRAY[RUN_FEATURE_9] 369
A 1 T362 E NATIVE_ARRAY[RUN_FEATURE_2] 362
A 1 T353 E NATIVE_ARRAY[RUN_FEATURE_3] 353
A 1 T346 E NATIVE_ARRAY[ONCE_FUNCTION] 346
A 1 T52 E NATIVE_ARRAY[RUN_FEATURE_6] 52
A*1 T22 R SMALL_EIFFEL 22
A 1 T252 R CREATION_CALL_3 252
A 1 T331 E SWITCH_COLLECTION 331
A*1 T47 R FIXED_ARRAY[INTEGER] 47
A 1 T123 R CALL_INFIX_AND_THEN 123
A 1 T324 R RUN_FEATURE_3 324
A 1 T296 R NATIVE_WITHOUT_CURRENT 296
A 1 T148 R SIMPLE_FEATURE_NAME 148
A 1 T273 R TYPE_CLASS 273
A 1 T142 R PREFIX_NAME 142
A 1 T157 R E_VOID 157
A*1 T88 R RENAME_PAIR 88
A 1 T315 R FROZEN_FEATURE_NAME 315
A*1 T29 R STD_OUTPUT 29
A 1 T6 E BOOLEAN 6
D 6 T265 R TYPE_BASIC_EIFFEL_EXPANDED 264,271,267,266,268,270
A 1 T245 R LOOP_VARIANT_2 245
A 1 T130 R CALL_INFIX_EQ 130
A 1 T122 R CALL_INFIX_AND 122
A 2 T360 R ARRAY[RUN_FEATURE] 360,361
A*1 T89 R ARRAY[RENAME_PAIR] 89
A 1 T185 R ARRAY[LOCAL_NAME1] 185
A*1 T318 R ARRAY[EXPORT_ITEM] 318
A*1 T308 R ARRAY[DECLARATION] 308
A 1 T332 E SWITCH 332
A*1 T7 R STRING 7
D 30 T118 R CALL_PROC_CALL 143,131,144,136,128,127,125,134,164,150,152,163,194,135,126,124,133,139,137,153,120,122,130,123,121,145,165,113,119,132
A 1 T168 R E_TRUE 168
A*1 T17 R INTEGER_REF 17
A 1 T146 R E_OLD 146
A 1 T314 R WRITABLE_ATTRIBUTE 314
A 1 T262 E NATIVE_ARRAY[TYPE] 262
A 1 T388 R RUN_FEATURE_4 388
A*1 T279 R ARRAY[FORMAL_GENERIC_ARG] 279
A 1 T211 R CST_ATT_REAL 211
A 1 T290 R EXTERNAL_PROCEDURE 290
A*1 T226 R IFTHEN 226
A 1 T203 E NATIVE_ARRAY[INTEGER_CONSTANT] 203
A*1 T101 R CLIENT_LIST 101
A 1 T303 R FUNCTION 303
A*1 T10 R COMPILE_TO_C 10
A*1 T364 R CECIL_POOL 364
A*1 T84 R UNIQUE_STRING 84
A*1 T96 R FEATURE_CLAUSE 96
A 1 T254 R CREATION_CALL_4 254
A 1 T339 E NATIVE_ARRAY[EFFECTIVE_ARG_LIST] 339
A 1 T281 E NATIVE_ARRAY[FORMAL_GENERIC_ARG] 281
A*1 T72 R PARSER_BUFFER 72
A 1 T120 R CALL_INFIX_OR 120
A 1 T153 R CALL_N 153
A 1 T327 E NATIVE_ARRAY[RUN_FEATURE] 327
A 1 T90 E NATIVE_ARRAY[RENAME_PAIR] 90
A 1 T186 E NATIVE_ARRAY[LOCAL_NAME1] 186
A 1 T319 E NATIVE_ARRAY[EXPORT_ITEM] 319
A 1 T309 E NATIVE_ARRAY[DECLARATION] 309
A 1 T224 E NATIVE_ARRAY[INSTRUCTION] 224
A*1 T87 R RENAME_LIST 87
D 2 T284 R DEFERRED_ROUTINE 285,287
A 1 T2 E INTEGER 2
D 2 T176 R E_PRECURSOR 175,177
A*1 T59 R DICTIONARY[RUN_CLASS,STRING] 59
A*1 T92 R DICTIONARY[E_FEATURE,STRING] 92
A 1 T361 R ARRAY[RUN_FEATURE_2] 361
A 1 T266 R TYPE_CHARACTER 266
A*1 T78 R PARENT_LIST 78
A*1 T379 R DICTIONARY[TYPE_REF_TO_EXP,STRING] 379
A*1 T348 R DICTIONARY[MANIFEST_STRING,STRING] 348
A*1 T70 R POSITION 70
A 1 T390 R FIXED_ARRAY[RUN_FEATURE_5] 390
A 1 T385 R FIXED_ARRAY[RUN_FEATURE_2] 385
A 1 T367 R FIXED_ARRAY[RUN_FEATURE_9] 367
A 1 T352 R FIXED_ARRAY[RUN_FEATURE_3] 352
A 1 T345 R FIXED_ARRAY[ONCE_FUNCTION] 345
A 1 T49 R FIXED_ARRAY[RUN_FEATURE_6] 49
A 1 T137 R CALL_INFIX_FREEOP 137
A 1 T177 R E_PRECURSOR_PROCEDURE 177
A*1 T102 R ID_PROVIDER 102
A*1 T233 R E_WHEN 233
A 1 T205 R CST_ATT_BOOLEAN 205
A 1 T389 R RUN_FEATURE_5 389
A*1 T82 R COMMENT 82
A 1 T374 R PRECURSOR_NAME 374
A 1 T313 R DECLARATION_1 313
A*1 T103 R ASSERTION 103
A 1 T42 E NATIVE_ARRAY[STRING] 42
A 1 T81 E NATIVE_ARRAY[PARENT] 81
A 1 T236 E NATIVE_ARRAY[E_WHEN] 236
A 1 T229 E NATIVE_ARRAY[IFTHEN] 229
A 1 T283 R REVERSE_ASSIGNMENT 283
A 1 T380 R FIXED_ARRAY[TYPE_REF_TO_EXP] 380
A 1 T208 R FIXED_ARRAY[MANIFEST_STRING] 208
A*1 T198 R TMP_FEATURE 198
A 1 T158 R WRITTEN_CURRENT 158
D 3 T162 R PROC_CALL 164,163,165
A 1 T3 E CHARACTER 3
A*1 T204 R COUNTER 204
A 1 T305 R ONCE_PROCEDURE 305
D 11 T51 R RUN_FEATURE 356,50,389,388,384,387,368,376,375,372,324
A 1 T8 E POINTER 8
A*1 T21 R ERROR_HANDLER 21
A*1 T79 R PARENT 79
A 1 T244 R E_LOOP 244
A 1 T381 E NATIVE_ARRAY[TYPE_REF_TO_EXP] 381
A 1 T77 E NATIVE_ARRAY[CREATION_CLAUSE] 77
A 1 T312 E NATIVE_ARRAY[LOCAL_ARGUMENT1] 312
A 1 T209 E NATIVE_ARRAY[MANIFEST_STRING] 209
A 1 T139 R CALL_PREFIX_FREEOP 139
A*1 T354 R ARRAY[BOOLEAN] 354
A*1 T172 R ARRAY[INTEGER] 172
A*1 T333 R DICTIONARY[DICTIONARY[RUN_FEATURE,STRING],STRING] 333
D 2 T237 R WHEN_ITEM 241,240
D 5 T83 R FEATURE_NAME 374,315,148,138,142
A 1 T147 R E_STRIP 147
A 1 T155 R ONCE_RESULT 155
A*1 T320 R INDEX_CLAUSE 320
A*1 T278 R FORMAL_GENERIC_ARG 278
A 1 T263 R TYPE_NATIVE_ARRAY 263
A 1 T267 R TYPE_DOUBLE 267
A 1 T212 R CST_ATT_DOUBLE 212
A 1 T199 R CST_ATT_UNIQUE 199
A*1 T341 R MANIFEST_ARRAY_POOL 341
A 1 T50 R RUN_FEATURE_6 50
A 1 T271 R TYPE_REAL 271
A*1 T95 R FEATURE_CLAUSE_LIST 95
A*1 T94 R FORMAL_GENERIC_LIST 94
D 8 T200 R CST_ATT 206,207,210,199,212,205,211,213
A 1 T210 R CST_ATT_BIT 210
A 1 T297 R NATIVE_INLINE_WITHOUT_CURRENT 297
A*1 T357 R RUN_REQUIRE 357
A 1 T133 R CALL_INFIX_DIV 133
A 1 T183 R LOCAL_NAME1 183
A*1 T317 R EXPORT_LIST 317
A 1 T377 R IMPLICIT_CAST 377
A 1 T124 R CALL_INFIX_GT 124
A 1 T126 R CALL_INFIX_LT 126
A*1 T243 R LOOP_INVARIANT 243
A 1 T257 R TYPE_LIKE_CURRENT 257
A*1 T45 R STD_FILE_WRITE 45
A*1 T340 R FIXED_ARRAY[PARENT] 340
A*1 T62 R FIXED_ARRAY[STRING] 62
A*1 T39 R ARRAY[STRING] 39
A*1 T80 R ARRAY[PARENT] 80
A*1 T235 R ARRAY[E_WHEN] 235
A*1 T228 R ARRAY[IFTHEN] 228
A 1 T260 R TYPE_ARRAY 260
D 2 T304 R ONCE_ROUTINE 306,305
A 1 T173 R REAL_CONSTANT 173
A*1 T358 R ARRAY[E_REQUIRE] 358
A*1 T328 R ARRAY[RUN_CLASS] 328
A 1 T180 R LOCAL_NAME2 180
A*1 T106 R ARRAY[ASSERTION] 106
A*1 T238 R ARRAY[WHEN_ITEM] 238
A 1 T387 R RUN_FEATURE_7 387
A 1 T175 R E_PRECURSOR_FUNCTION 175
A 1 T274 R TYPE_GENERIC 274
D 5 T141 R CALL_0 143,144,150,139,145
A*1 T334 R FIXED_ARRAY[DICTIONARY[RUN_FEATURE,STRING]] 334
A*1 T371 R MEMO[COMMENT] 371
A 1 T272 R TYPE_STRING 272
A 1 T264 R TYPE_BOOLEAN 264
D 52 T56 R EXPRESSION 377,366,190,183,230,113,119,120,121,122,123,124,126,125,127,128,130,131,132,133,134,135,136,194,137,146,193,188,180,175,174,173,55,171,170,169,168,160,139,143,157,148,158,144,156,145,153,150,152,110,155,147
A 1 T293 R NATIVE_WITH_CURRENT 293
A 1 T335 E NATIVE_ARRAY[DICTIONARY[RUN_FEATURE,STRING]] 335
A*1 T347 R MANIFEST_STRING_POOL 347
A*1 T349 R ADDRESS_OF_POOL 349
A 1 T383 E NATIVE_ARRAY[TYPE_BIT_REF] 383
A 1 T329 E NATIVE_ARRAY[BIT_CONSTANT] 329
A 1 T323 E NATIVE_ARRAY[INDEX_CLAUSE] 323
A 1 T91 E NATIVE_ARRAY[FEATURE_NAME] 91
D 2 T307 R DECLARATION 313,310
A 1 T231 R E_RETRY 231
A 3 T343 R FIXED_ARRAY[TYPE] 382,380,343
D 2 T289 R EXTERNAL_ROUTINE 290,291
A 1 T366 R CECIL_TARGET 366
D 2 T179 R DECLARATION_LIST 178,187
D 2 T53 R TYPE_BIT 277,276
A*1 T35 R STD_ERROR 35
A 1 T295 R NATIVE_INLINE_WITH_CURRENT 295
A 1 T135 R CALL_INFIX_INT_DIV 135
A 1 T384 R RUN_FEATURE_8 384
A*1 T344 R ONCE_ROUTINE_POOL 344
D 2 T129 R CALL_INFIX2 128,130
A 1 T255 R TYPE_LIKE_FEATURE 255
A 1 T350 R FIXED_ARRAY[ADDRESS_OF] 350
A*1 T67 R FIXED_ARRAY[BASE_CLASS] 67
A 5 T151 R FIXED_ARRAY[EXPRESSION] 57,350,208,202,151
A*1 T196 R FIXED_ARRAY[CLASS_NAME] 196
D 27 T117 R CALL 143,131,144,136,128,127,125,134,150,152,194,135,126,124,133,139,137,153,120,122,130,123,121,145,113,119,132
A 1 T300 R NATIVE_JVM_INVOKEVIRTUAL 300
A 1 T194 R CALL_INFIX_POWER 194
A*1 T28 R ECHO 28
A 1 T163 R PROC_CALL_0 163
A 1 T337 E NATIVE_ARRAY[CALL_PROC_CALL] 337
A 1 T192 E NATIVE_ARRAY[ARGUMENT_NAME1] 192
A 1 T98 E NATIVE_ARRAY[FEATURE_CLAUSE] 98
A*1 T322 R ARRAY[INDEX_CLAUSE] 322
A 1 T258 R TYPE_LIKE_ARGUMENT 258
A 1 T4 E REAL 4
A 1 T207 R CST_ATT_STRING 207
A*1 T60 R FIXED_ARRAY[RUN_CLASS] 60
A 2 T99 R FIXED_ARRAY[E_FEATURE] 345,99
A 1 T110 R MANIFEST_ARRAY 110
A 1 T287 R DEFERRED_FUNCTION 287
A*1 T342 R DICTIONARY[TYPE,INTEGER] 342
A 1 T292 R NATIVE_SMALL_EIFFEL 292
A*1 T75 R CREATION_CLAUSE 75
A 1 T240 R WHEN_ITEM_1 240
A*1 T363 R EXCEPTIONS_HANDLER 363
A 1 T152 R CALL_1_C 152
A 1 T150 R CALL_0_C 150
A*1 T330 R GC_HANDLER 330
A*1 T74 R CREATION_CLAUSE_LIST 74
A*1 T24 R RUN_CLASS 24
A 1 T232 R E_INSPECT 232
A 1 T190 R ARGUMENT_NAME1 190
A 1 T164 R PROC_CALL_1 164
A 6 T326 R FIXED_ARRAY[RUN_FEATURE] 390,385,367,352,326,49
A*1 T217 R FIXED_ARRAY[INSTRUCTION] 217
A 1 T134 R CALL_INFIX_INT_REM 134
D 22 T54 R TYPE 373,378,280,277,276,275,274,273,272,271,270,269,268,267,266,264,263,260,259,258,257,255
A*1 T234 R WHEN_LIST 234
A 1 T368 R RUN_FEATURE_9 368
D 2 T184 R LOCAL_ARGUMENT1 190,183
A*1 T219 R CHECK_INVARIANT 219
A*1 T336 R FIXED_ARRAY[CALL_PROC_CALL] 336
D 17 T93 R E_FEATURE 314,306,305,303,302,291,290,287,285,213,212,211,210,207,206,205,199